home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / disasm.tar / disasm / capture.c < prev    next >
C/C++ Source or Header  |  1990-04-25  |  2KB  |  79 lines

  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <errno.h>
  4. #include <Errors.h>
  5. #include <Devices.h>
  6. #include <Serial.h>
  7.  
  8. #define BSIZE    102400
  9.  
  10. main(int argc, char **argv)
  11. {
  12.     short    ref;
  13.     short    config;
  14.     int    count;
  15.     int    fd;
  16.     OSErr    err;
  17.     char    *buf, *buf2, *malloc();
  18.     
  19.     if ((buf = malloc(BSIZE)) == NULL) {
  20.         fprintf(stderr, "malloc failed\n");
  21.         exit(1);
  22.     }
  23.     
  24.     if ((buf2 = malloc(BSIZE)) == NULL) {
  25.         fprintf(stderr, "malloc (2) failed\n");
  26.         goto free1;
  27.     }
  28.     
  29.     if ((err = RamSDOpen(sPortA)) != noErr) {
  30.         fprintf(stderr, "RAMSDOpen = %d\n", err);
  31.         goto free2;
  32.     }
  33.     
  34.     if ((err = OpenDriver("\P.AIn", &ref)) != noErr) {
  35.         fprintf(stderr, "OpenDriver = %d\n", err);
  36.         goto free2;
  37.     }
  38.     
  39.     config = baud9600 | stop10 | noParity | data8;
  40.     if ((err = SerReset(ref, config)) != noErr) {
  41.         fprintf(stderr, "SerReset = %d\n", err);
  42.         goto done;
  43.     }
  44.     
  45.     if ((err = SerSetBuf(ref, (Ptr) buf, BSIZE)) != noErr) {
  46.         fprintf(stderr, "SerSetBuf = %d\n", err);
  47.         goto done;
  48.     }
  49.     
  50.     fprintf(stderr, "Ready\n");
  51.     count = BSIZE;
  52.     if ((err = FSRead(ref, &count, (Ptr) buf2)) != noErr)
  53.         fprintf(stderr, "FSRead = %d\n", err);
  54.     
  55.     fprintf(stderr, "Read %d bytes\n", count);
  56.     if ((err = SerSetBuf(ref, (Ptr) nil, 0)) != noErr)
  57.         fprintf(stderr, "SerSetBuf (2) = %d\n", err);
  58.         
  59. done:
  60.     if ((err = CloseDriver(ref)) != noErr)
  61.         fprintf(stderr, "CloseDriver = %d\n", err);
  62.  
  63.     RamSDClose(sPortA);
  64.     if ((fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC)) < 0) {
  65.         fprintf(stderr, "open = %d\n", errno);
  66.         goto free2;
  67.     }
  68.     
  69.     if (write(fd, buf2, count) != count)
  70.         fprintf(stderr, "write = %d\n", errno);
  71.         
  72.     (void) close(fd);
  73. free2:    
  74.     free(buf2);
  75. free1:
  76.     free(buf);
  77.     exit(0);
  78. }
  79.